package net

// 定义消息格式

// ReqBody 路由请求 body
type ReqBody struct {
	Seq   int64       `json:"seq"`   // 建立通道之后的序号标识
	Name  string      `json:"name"`  // 请求名称
	Msg   interface{} `json:"msg"`   // 请求信息
	Proxy string      `json:"proxy"` // 代理 后续需要开多进程
}

// RspBody 路由返回 body
type RspBody struct {
	Seq  int64       `json:"seq"`  // 序号
	Name string      `json:"name"` // 名称
	Code int         `json:"code"` // 标识错误码
	Msg  interface{} `json:"msg"`  // 携带信息
}

// WsMsgReq 模仿 http 的 Request
type WsMsgReq struct {
	Body *ReqBody
	Conn WSConn // 定义一些链接接口  请求时会有一些数据去处理
}

// WsMsgRsp 模仿 http 的 response
type WsMsgRsp struct {
	Body *RspBody
}

// WSConn 理解为 request请求 请求会有参数 请求中放参数 取参数
type WSConn interface {
	SetProperty(key string, value interface{})
	GetProperty(key string) (interface{}, error)
	RemoveProperty(key string)
	Addr() string
	Push(name string, data interface{})
}

// Handshake 握手协议 secretKey 结构体
type Handshake struct {
	Key string `json:"key"`
}
